package com.jumi.microservice.service;

import com.jumi.microservice.common.page.TableDataInfo;
import com.jumi.microservice.domain.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * - - - - - - - - - - - - - - -
 * 基础信息服务 dubbo
 *
 * @author liuz
 * @date 2020/9/7 16:22
 * ToDoSomeThing
 * - - - - - - - - - - - - - - -
 */
public interface BasicDataService {

    /**
     * 获取运费模板信息
     *
     * @param id 运费模板主键id
     * @return
     */
    FreightTempDTO freightInfo(Long id);

    /**
     * 根据skuid集合查询该skuID的基本信息(库存服务)
     *
     * @param skuIds 商品skuid集合
     * @return 该skuID基本信息
     */
    Map<Long, SkuDTO> getSkuInfoByIds(List<Long> skuIds);

    /**
     * 根据skuid集合或者物料名称查询该sku的基本信息
     *
     * @param skuIds     商品skuid集合、supplyName物料名称
     * @param supplyName supplyName物料名称
     * @return 该skuID基本信息
     */
    Map<Long, SkuDTO> getSkuInfoByIds(List<Long> skuIds, String supplyName);

    /**
     * 根据skuid集合查询该skuID以及对应的物料信息
     *
     * @param skuIds 商品skuid集合
     * @return skuID以及对应的物料信息
     */
    List<GoodsSkuMaterialDTO> getMaterialSkuRelationshipByIds(List<Long> skuIds);

    /**
     * 根据spuid集合查询该spu ID，图片，名称，重量/个(订单模块)
     *
     * @param goodsIds 商品spuid集合
     * @return 该spu ID，图片，名称，重量/个
     */
    List<GoodsInfoDTO> getGoodsInfoByIds(List<Long> goodsIds);

    /**
     * 根据spuid集合查询该spu ID，图片，名称，重量/个(订单模块)
     *
     * @return 所有spu ID，图片，名称，重量/个
     */
    List<GoodsInfoDTO> getGoodsInfoByIds();

    /**
     * 根据skuid集合查询该skuID的属性
     *
     * @param skuIds 商品skuid集合
     * @return 该skuID集合的属性
     */
    List<SkuDTO> getGoodsSkuListByIds(List<Long> skuIds);

    /**
     * 活动添加商品分页列表
     *
     * @param queryActivityGoods 商品条件类
     * @return
     */
    TableDataInfo<GoodsSpuDTO> getGoods4ActivityPage(String queryActivityGoods);

    /**
     * 根据商品SPU ID查询其税率
     *
     * @param goodsIds 商品SPU ID集合
     * @return Map<Long, BigDecimal>
     */
    Map<Long, BigDecimal> getGoodsTaxBySpuId(List<Long> goodsIds);

    /**
     * 根据skuid集合查询该skuID的SPUID(订单服务)
     *
     * @param skuIds 商品skuid集合
     * @return SPUID
     */
    Map<Long, Long> getSpuIdBySkuIds(List<Long> skuIds);


    /**
     * 根据skuid集合获取物料名称查询该sku的基本信息
     *
     * @param skuIds     商品skuid集合、supplyName物料名称
     * @param supplyName supplyName物料名称
     * @return 该skuID基本信息
     */
    Map<Long, SkuDTO> getMaterialInfoByIds4Order(List<Long> skuIds, String supplyName);
}
